# coding:utf-8
# 王一舟
# demo.py


'''

读取某个文件夹下所有满足条件的yaml文件(测试用例)
#  以  用例编号(数字)_XXXX.yaml  格式出现的文件则认为是测试用例
'''

import os,uuid
import pathlib


yaml_folder_path = pathlib.Path(__file__).parents[1].resolve() / 'yaml_files'

#TODO 1 : 获取yaml文件目录下的所有文件名

all_yaml_list = os.listdir(yaml_folder_path)  #os.listdir(目录路径) , 返回的是一个列表, 可以获取指定目录下的所有文件名
print(all_yaml_list)


#TODO 2 : 基于所有文件名筛选符合条件的 - 遍历
yaml_case_list = [] #后续存放满足条件的yaml文件名

for f in all_yaml_list:
    if f.endswith(".yaml") and f.split("_")[0].isdigit():
        #1如果列表中的文件名以.yaml结尾,
        #2将文件名以"_"分隔获取返回的列表的第0个值(即_前面的序号),判断这个序号是不是数字,如果符合这2个条件就把这个文件名添加到空列表
        yaml_case_list.append(f)

print(yaml_case_list)

#TODO 3 : 将以上#2 用一行代码实现
yaml_case_list = [(int(f.split("_")[0]),f) for f in os.listdir(yaml_folder_path) if f.endswith(".yaml") and f.split("_")[0].isdigit()]
'''
(f.split("_")[0],f) : 代表以元组接收结果,内容是(int(序号),符合条件的文件名), 最后yaml_case_list是一个[(1,文件名),(2,文件名),(3,文件名)]的格式 ,序号提取出来是为了后续排序用
or f in os.listdir(yaml_folder_path)  :  os.listdir(yaml_folder_path) 即存放目录下的所有文件名的列表
if f.endswith(".yaml") and f.split("_")[0].isdigit() : 将文件名以"_"分隔获取返回的列表的第0个值(即_前面的序号),判断这个序号是不是数字,如果符合这2个条件就把这个文件名添加到空列表
输出: [('01', '01_登录成功测试用例+MySQL.yaml'), ('02', 'T02_登录失败测试用例.yaml'), ('03', '03_加入购物车成功用例.yaml')]
'''
print("符合以数字为序列开头并且以.yaml结尾的文件名为:",yaml_case_list)




str = "i love python"

print(str.endswith("e", 0, 6)) #检查索引 i love 是否以“e”结尾,开区间要-1。

'''
endswith() 是 Python 字符串对象的一个方法，用于检查字符串是否以指定的后缀结尾。
语法如下：
str.endswith(suffix[, start[, end]])
suffix：要检查的后缀字符串。
start（可选参数）：检查的起始位置，默认为 0。
end（可选参数）：检查的结束位置，默认为字符串的末尾。
该方法返回一个布尔值，表示字符串是否以指定的后缀结尾。
'''

file = "python.AVI"
if file.endswith("txt"):
    print("该文件是文本文件")
elif file.endswith(("AVI","WMV","RM")):  #传入元组,会遍历元祖中的每个字符串,符合元组中的1个就返回true
    print("该文件为视频文件")
else:
    print("文件格式未知")

'''
isdigit 是 Python 中字符串对象的一个方法，用于检查字符串中的所有字符是否都是数字。
'''

str = "123a45"
if str.isdigit():
    print("字符串只包含数字")
else:
    print("字符串包含非数字字符")

print(uuid.uuid4().__str__())



d = [{"id":"11","user":"hami","age":13},{"id":"12","user":"lll","age":14},{"id":"13","user":"kkk","age":15},{"id":"14","user":"ttt","age":16}]


f = ["id","user","age"]



result = {}
for i, data in enumerate(d, start=1): #[{"id":"555"}]  (1 , {"id":"555"})

    for j, value in enumerate(f):
        print(j,value)
        result[f"{f[j]}_{i}"] = data.get(f[j])

            # id_1 = 11
            # user_1 = hami


print(result)

'''
操作数据库 pymysql

步骤:
1.有人去操作数据库: 创建游标对象
2.基于游标对象做对应的操作
3.获取执行的结果数据
4.关闭游标

'''

#连接数据库
from pymysql import cursors
import pymysql

conn = {'host': 'shop-xo.hctestedu.com', #数据库地址
        'port': 3306,
        'user': 'api_test',
        'password': 'Aa9999!',
        'db': 'shopxo_hctested', #数据库名称
        "cursorclass": cursors.DictCursor} #以字典格式显示数据,返回的是列表套字典的形式[{},{}...]

print(conn)


connection = pymysql.connect(**conn)#创建连接对象

cur = connection.cursor()#从连接对象创建游标对象
SQL = 'SELECT id,username,nickname FROM sxo_user WHERE username LIKE "1592%"'

cur.execute(SQL)

res = cur.fetchall() #获取所有满足条件的数据

print(res)

connection.close() #关闭连接,用完就关, 数据库有连接数



str = "nike"

l = str.split(",")
print(l)


k = [None]

print(len(k))
new_info = {"a":0,"b":1}
context = new_info.get("context",{})

print(context)
new_info.update(context)

print(new_info)



